package com.str.service;


import com.alibaba.fastjson.JSONObject;
import com.str.dto.*;
import com.str.vo.ResponseVO;

import javax.servlet.http.HttpServletRequest;

/**
 * 系统用户信息表(SystemUser)表服务接口
 *
 * @author makejava
 * @since 2023-04-09 17:59:43
 */
public interface SystemUserService {

    /**
     * 登录提交
     * @param loginSubmitDto
     * @return
     */
    String loginSubmit(LoginSubmitDto loginSubmitDto);

    /**
     * 获取登录加密key
     * @param requestJson
     * @return
     */
    String getKey(JSONObject requestJson);

    /**
     * 短信验证码登录获取验证码
     * @param requestJson
     * @return
     */
    ResponseVO getLoginCode(JSONObject requestJson);

    /**
     * 重置密码
     * @param dto
     * @return
     */
    ResponseVO resetPassword(ResetPasswordDto dto, HttpServletRequest request);

    /**
     * 获取用户个人信息
     * @param request
     * @return
     */
    ResponseVO getSystemUser(JSONObject requestJson,HttpServletRequest request);

    /**
     * 获取用户列表
     * @param request
     * @return
     */
    ResponseVO getSystemUserList(GetSystemUserListDto dto,HttpServletRequest request);

    /**
     * 添加用户
     * @param request
     * @param addSystemUserDto
     * @return
     */
    ResponseVO addSystemUser(AddSystemUserDto addSystemUserDto,HttpServletRequest request);

    /**
     * 删除用户
     * @param requestJson
     * @param request
     * @return
     */
    ResponseVO deleteSystemUser(JSONObject requestJson, HttpServletRequest request);

    /**
     * 启用/冻结
     * @param dto
     * @param request
     * @return
     */
    ResponseVO enableDisableSystemUser(EnableDisableSystemUserDto dto, HttpServletRequest request);

    /**
     * 获取所有的角色信息
     * @param request
     * @return
     */
    ResponseVO getRoleList(HttpServletRequest request);

    /**
     * 根据角色类型分页查询绑定角色的用户列表
     * @param dto
     * @param request
     * @return
     */
    ResponseVO getRoleUserList(GetRoleUserListDto dto, HttpServletRequest request);

    /**
     * 删除对应角色的用户
     * @param dto
     * @param request
     * @return
     */
    ResponseVO deleteRoleUser(DeleteRoleUserDto dto, HttpServletRequest request);

    /**
     * 获取所有的非绑定角色用户列表
     * @param request
     * @return
     */
    ResponseVO getAllGeneralUserList(GetAllGeneralUserListDto dto,HttpServletRequest request);

    /**
     * 添加对于角色用户信息
     * @param dto
     * @param request
     * @return
     */
    ResponseVO addRoleUserList(AddRoleUserListDto dto, HttpServletRequest request);

    /**
     * 退出登录
     * @param request
     * @return
     */
    ResponseVO logOutSystem(HttpServletRequest request);
}
